//package com.liuyjy.mybatisplus.util;
//
//import com.baomidou.mybatisplus.generator.FastAutoGenerator;
//import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
//import com.baomidou.mybatisplus.generator.config.OutputFile;
//import com.baomidou.mybatisplus.generator.config.TemplateType;
//import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
//import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery;
//import com.baomidou.mybatisplus.generator.config.rules.DateType;
//import com.baomidou.mybatisplus.generator.keywords.MySqlKeyWordsHandler;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
//import java.io.InputStream;
//import java.util.Collections;
//
///**
// * @Author liuyjy
// * @Date 2022/1/18 13:07
// * @Description: 生成配置
// * <p>
// * https://baomidou.com/pages/981406/#entity-%E7%AD%96%E7%95%A5%E9%85%8D%E7%BD%AE
// **/
//public class GenerateUtil351 {
//    private static final String DRIVER = "com.mysql.jdbc.Driver";
//    private Logger logger = LoggerFactory.getLogger(GenerateUtil351.class);
//    /**
//     * 数据库链接
//     */
//    private String url;
//    /**
//     * 用户名
//     */
//    private String username;
//    /**
//     * 密码
//     */
//    private String password;
//    /**
//     * 项目路径
//     */
//    private String parentpath;
//    /**
//     * 作者
//     */
//    private String author;
//
//    /**
//     * 表名
//     */
//    private String table;
//
//    /**
//     * 生成目录
//     */
//    private String outputDir;
//
//    /**
//     * 生成文件
//     *
//     * @param jdbcStream 文件
//     */
//    public void create(InputStream jdbcStream) {
//        FastAutoGenerator.create(
//                //数据源配置，url需要修改
//                new DataSourceConfig.Builder("jdbc:mysql://localhost:3306/user_db?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC",
//                        "root", "123456")
//                        //数据库查询
//                        .dbQuery(new MySqlQuery())
//                        //数据库 schema(部分数据库适用)
//                        .schema("mybatis-plus")
//                        //数据库类型转换器
//                        .typeConvert(new MySqlTypeConvert())
//                        //数据库关键字处理器
//                        .keyWordsHandler(new MySqlKeyWordsHandler())
//        )
//
//                //全局配置
//                .globalConfig(builder -> {
//                    builder
//                            //覆盖已生成文件 默认值:false
//                            .fileOverride()
//                            //禁止打开输出目录 默认值:true
//                            .disableOpenDir()
//                            //指定输出目录
//                            .outputDir(System.getProperty("user.dir") + "/src/main/java")
//                            //设置作者
//                            .author("baomidou")
//                            //开启 kotlin 模式 默认值:false
//                            .enableKotlin()
//                            //开启 swagger 模式 默认值:false
//                            .enableSwagger()
//                            // 	时间策略
//                            .dateType(DateType.TIME_PACK)
//                            //注释日期 默认值: yyyy-MM-dd
//                            .commentDate("yyyy-MM-dd")
//                    ;
//                })
//
//                //包配置
//                .packageConfig(builder -> {
//                    builder
//                            //父包名
//                            .parent("com.baomidou.mybatisplus.samples.generator")
//                            //父包模块名
//                            .moduleName("sys")
//                            //Entity 包名
//                            .entity("po")
//                            //Service 包名
//                            .service("service")
//                            //Service Impl 包名
//                            .serviceImpl("service.impl")
//                            //Mapper 包名
//                            .mapper("mapper")
//                            //Mapper XML 包名
//                            .xml("mapper.xml")
//                            //Controller 包名
//                            .controller("controller")
//                            //自定义文件包名
//                            .other("other")
//                            //路径配置信息
//                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, System.getProperty("user.dir") + "/src/main/resources/mapper"));
//                })
//
//                .templateConfig(builder -> {
//                    builder
//                            //禁用模板
//                            .disable(TemplateType.ENTITY)
//                            //设置实体模板路径(JAVA)
//                            .entity("/templates/entity.java")
//                            .service("/templates/service.java")
//                            .serviceImpl("/templates/serviceImpl.java")
//                            .mapper("/templates/mapper.java")
//                            .mapperXml("/templates/mapper.xml")
//                            .controller("/templates/controller.java");
//                })
//
//                .injectionConfig(builder -> {
//                    builder
//                            //输出文件之前消费者
//                            .beforeOutputFile((tableInfo, objectMap) -> {
//                                System.out.println("tableInfo: " + tableInfo.getEntityName() + " objectMap: " + objectMap.size());
//                            })
//                            //自定义配置 Map 对象
//                            .customMap(Collections.singletonMap("test", "baomidou"))
//                            //自定义配置模板文件
//                            .customFile(Collections.singletonMap("test.txt", "/templates/test.vm"));
//                })
//
//
//                //策略配置
//                .strategyConfig(builder -> {
//                    builder
//                            .enableCapitalMode()
//                            .enableSkipView()
//                            .disableSqlFilter()
//                            .addInclude("t_simple")
//                            .addTablePrefix("t_", "c_")
//                            .addFieldSuffix("_flag")
//
//
//                            //设置需要生成的表名
//                            .addInclude("t_role")
//                            //设置过滤表前缀
//                            .addTablePrefix("t_", "c_") // 设置过滤表前缀
//                            //.entityBuilder() //实体类配置
//                            .enableLombok() //使用lombok
//                            //.enableTableFieldAnnotation()//实体类字段注解
//                            //.controllerBuilder()//controller配置
//                            //.enableRestStyle()//开启restcontroller
//                            .mapperBuilder()
//                            .enableMapperAnnotation();//开启mapper注解
//                            .enableBaseResultMap()//启用 BaseResultMap 生成
//                            .enableBaseColumnList();//启用 BaseColumnList
//                })
//                //.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板，默认的是Velocity引擎模板
//                .execute();
//
//    }
//}
